
function JpUploader($el, options){
	var DEFAULT_OPTIONS = {
			thumbnailWidth: 100, // 缩略图宽
			thumbnailHeight: 100, // 缩略图高
			fileNumLimit: 1, // 限制上传图片数量
			fileSingleSizeLimit: 1*1024*1024, //单个文件大小
			duplicate: true, // 去重
			ratio: window.devicePixelRatio || 1,
			auto: true,
			imgEl: null,
			uploadType: null, // 上传文件的业务类型下标
			uploadName: null, // 自定义文件名
			server: '../upload/image.do',
			pick: "#filePicker",
			accept: {
				title: 'Images',
				extensions: 'jpg,jpeg,png,gif',
				mimeTypes: 'image/jpg,image/jpeg,image/png,image/gif'
			},
			formData: {
				uploadType: null, // 上传图片业务类型
				uploadName: null, // 自定义图片名称
				affixType: null, // 附件类型
				storeType: null, // 存储类型
				affixIdx: null
			}
	},UPLOAD_TYPE = [
		"app", // app业务
		"ins", // 机构业务
		"user", // 用户业务
		"channel", // 通道业务
		"member", // 会员业务
		"system" // 系统业务
		];
	// 参数合并
	options = $.extend({}, DEFAULT_OPTIONS, options);
	if(options.formData.uploadType >= 0 && UPLOAD_TYPE.length >= options.formData.uploadType){
		options.formData.uploadType = UPLOAD_TYPE[options.formData.uploadType];
	}
	var uploader = WebUploader.create(options);
	
	/*当文件被加入队列之前触发*/
	uploader.on("beforeFileQueued", function(file){
		var files = uploader.getFiles();
		if(file && file.size > options.fileSingleSizeLimit){
			$.jpmessage.warning("单个上传图片不能超过" + (options.fileSingleSizeLimit/(1024*1024)) + "M");
			return false;
		}else if(files.length === 1 && options.fileNumLimit === 1){// 设定一张图片时，覆盖之前的图片
			uploader.removeFile(files[0], true);
			$('#'+files[0].id).remove();
			$('#_'+files[0].id).remove();// 删除隐藏的预览图
			$('#hiden_'+files[0].id).remove();
			uploader.reset();
		}else if(files.length >= options.fileNumLimit){// 超过图片数量上限
			$.jpmessage.warning("图片上传数量已达上限");
			return false;
		} 
	});
	
	/*文件加入队列之后，创建缩略图*/
	uploader.on("fileQueued", function fileQueued(file){
		var $imgDiv = $("<div id='" 
				+ file.id + "' class='file-item thumbnail'><img/><div class='info'>" 
				+ file.name + "</div><div class='file-panel'><span class='cancel' title='删除'></span></div></div>");
		var $img = $imgDiv.find('img');
		$el.append($imgDiv);
	    // 创建缩略图
		uploader.makeThumb(file, function(error, src){
	        if(error){
	            $img.replaceWith('<span>不能预览</span>');
	            return;
	        }
	        $img.attr('src', src);
	    }, options.thumbnailWidth * options.ratio, 
	    options.thumbnailHeight * options.ratio);
	});
	// 文件上传过程中创建进度条实时显示。
	uploader.on("uploadProgress", function(file, percentage){
		var $li = $('#' + file.id ),
        $percent = $li.find('.progress span');
	    // 避免重复创建
	    if (!$percent.length){
	        $percent = $('<p class="progress"><span></span></p>').appendTo($li).find('span');
	    }
	    $percent.css('width', percentage * 100 + '%');
	});
	// 文件上传成功，给item添加成功class, 用样式标记上传成功。
	uploader.on("uploadSuccess", function(file, resp){
		$('#'+file.id).addClass('upload-state-done');
		if(resp.respCode === "SYS_000"){
			$("form").append("<input type='hidden' id='hiden_"+file.id+"' name='imgUpload' value='"
					+options.formData.affixType+"#"
					+options.formData.storeType+"#"
					+resp.respData.affixPath+"'/>");
			showimg(file, resp);
		}else{
			uploadError(file);
		}
	});
	// 文件上传失败，现实上传出错。
	uploader.on("uploadError", function(file, reason){
	    var $li = $('#'+file.id),
	    $error = $li.find('div.error');
	    // 避免重复创建
	    if (!$error.length){
	        $error = $('<div class="error"></div>').appendTo($li);
	    }
	    $error.text('上传失败');
	});
	// 完成上传完了，成功或者失败，先删除进度条。
	uploader.on("uploadComplete", function(file){
		$('#'+file.id).find('.progress').remove();
		// 删除按钮事件
		$('#'+file.id).find(".cancel").on("click", function(){
			uploader.removeFile(file, true);
			$('#'+file.id).remove();
			$('#_'+file.id).remove();// 删除隐藏的预览图
			$('#hiden_'+file.id).remove();
			uploader.reset();
		});
	});
	
	uploader.on("error", function(type){
		console.log(type);
	});
	
	// 上传成功，显示预览图
	showimg = function(file, resp){
		$img = $("<div id=_"+ file.id +" style='display:none'><img src='"+resp.respData.contentPath + resp.respData.affixPath+"'/></div>");
		$("body").append($img);
		$("#_"+file.id).viewer();
		$("#"+file.id).find("img").on("click", function(){
			$("#_"+file.id).find("img").trigger("click");
		});
	}
	/*修改展示图片*/
	if(options.formData.affixIdx){
		$.ajax({
			url:"../upload/showimage.do",
			data: options.formData,
			success: function(result){
				if(result.respCode === "SYS_000"){
					var imgId = options.formData.affixIdx + options.formData.storeType;
					var img = "<img src='"+result.respData+"' style='height:110px' id='"+imgId+"'/>";
					$(options.imgEl).prepend(img);
					$("#" + imgId).viewer();
				}
			}
		});
	}
}